import axios from 'axios'
import { useUserStore } from '@/stores' // 根据实际存储模块路径引入
import { ElMessage } from 'element-plus'
import router from '@/router'

const baseURL = 'http://localhost:2000' // 你的服务器地址

// 创建 axios 实例
const instance = axios.create({
  baseURL,
  timeout: 10000
})

// 请求拦截器(对请求的状态码进行分析，如果200放行)
instance.interceptors.request.use(
  async (config) => {
    try {
      const userStore = useUserStore()
      if (userStore.token) {
        config.headers.Authorization = userStore.token
      }
      return config
    } catch (error) {
      console.error('获取用户存储或token时出现错误:', error)
      return config
    }
  },
  (err) => Promise.reject(err)
)
// 响应拦截器
instance.interceptors.response.use(
  (res) => {
    // TODO 4. 摘取核心响应数据
    if (res.data.result === 'success') {
      router.push('/index')
      return res
    }
    return res.data
  },
  (err) => {
    // TODO 5. 处理401错误
    // 错误的特殊情况 => 401 权限不足 或 token 过期 => 拦截到登录
    if (err.response?.status === 401) {
      router.push('/login')
    }

    // 错误的默认情况 => 只要给提示
    ElMessage.error(err.response.data.message || '服务异常')
    return Promise.reject(err)
  }
)
export default instance
export { baseURL }